在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络
在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
来源:知乎—trouble
地址:https://zhuanlan.zhihu.com/p/433610155
01
UPRec: User-Aware Pre-training for Recommender Systems [submitted to TKDE]
先前的推荐系统里的预训练模型都只是专注于利用用户行为序列里面的通用序列模式,但是他们忽视了使用用户的信息来捕获个性化的兴趣。在这篇文章里作者提出一个用异构用户信息来增强预训练模型,叫做 User-aware Pre-training for Recommendation (UPRec). UPRec利用用户属性和结构化的社交图来构建预训练阶段的自监督目标函数并提出两个用户感知的预训练任务。
与NLP领域的预训练的区别:NLP里面的预训练专注于学习通用的语言知识,而推荐系统不仅应该利用通用的序列模式,而且应该捕获每个用户的个性化的兴趣。因此在预训练的时候利用用户信息还是很有必要的。
这里主要定义了三个目标函数:
- User Attribute Prediction
其中 是数值型特征的集合, 是离散型特征的集合。
- Social Relation Detection
这里就是用的对比学习范式,目的是想让query用户的表示和其朋友的表示相似度接近,和负样本的表示原理。
UPRec包含两步,首先通过上面的L来预训练encoder,而在微调阶段使用预训练好的参数来初始化encoder的参数来进行下游任务。对于序列化推荐的任务,首先将序列里最后一个一个物品给masked掉并采用masked target的negative log-likelihood来优化模型。对于用户属性预测的任务,我们使用 [CLS] 的hidden vector来表示用户,然后对于数值型特征用回归的目标函数,对离散型特征用分类的目标函数(这里设置和预训练阶段一样)。
02
U-BERT: Pre-training User Representations for Improved Recommendation [AAAI 21]
用户表示通常是从行为数据(点击、评论内容)里面学习。但是,对于不那么流行的域,行为数据不足以让模型充分地学习到精确的用户表示。为了解决这个问题,一个自然的想法就是用内容丰富的域来补全用户表示。受最近NLP领域的Bert的启发,我们提出了一个新颖的预训练和微调为基础的方法U-BERT。不同于BERT,U-BERT是专门为推荐系统定制的。在预训练阶段,U-BERT专注于内容丰富的域并引进一个用户编码器和评论编码器来建模用户的行为。两个预训练策略也被提出来学习通用的用户表示;在微调阶段,U-BERT专注于目标内容不丰富的域,出了预训练阶段的两个编码器,U-BERT进一步引入了物品编码器来建模物品表示。此外,一个review co-matching layer也被提出去从用户和物品的评论里面学习语义更丰富的交互。最终,U-BERT结合用户表示,物品表示和评论交互信息去提高推荐系统性能。
Review Encoder就是用一个Bert来学习评论的表示
User Encoder的表示学习如下
这里就是先将ID embedding和domain embedding相结合,得到一个新的用户embedding,然后将其和学习到的评论的表示做ATTN操作,做后再融合到一起。
预训练阶段两个任务:
任务一:Masked Opinion Token Prediction
与BERT相比做的修改:1)当预测masked word的时候,除了句子内容的表示,我们还添加了用户的表示来学习用户本质上的评论偏好;2)我们选择观点类的单词掩掉而不是随机掩单词,因为观点类的单词是不同域的评论共用的。
任务二:Opinion Rating Prediction
这里使用融合了文本观点信息和通用的用户偏好信息来作为最终的用户embedding来预测评分。
预训练
微调U-BERT来进行评分预测任务
这里除了预训练阶段的两个encoder,还引入了Item Encoder.
Review Co-Matching Layer
通过理解用户u的评论,我们可以知道他关心的点。而通过理解物品i的评论我们可以知道这个物品所有方面的细节并且所有用户对于该物品的general comments.
因此我们可以估计用户u对物品i各个方面的关心程度通过衡量他们的评论语义相似度。受阅读理解里相关的工作启发,这里使用co-matching机制来收集相似信息。
上面这里是将彼此的评论对齐,接下来就是引进匹配层来捕获原来的表示和注意力之后的表示的语义相似程度。
最后使用row-wise的max-pooling来融合所有位置的匹配信息来得到对用户评论和物品评论的充分理解。
预测层和训练:
实验设置:
03
Curriculum Pre-Training Heterogeneous Subgraph Transformer for Top- Recommendation [arxiv 21]
HIN里面包含很多复杂并且可能和推荐任务不相关的信息,因此怎么从HIN里面高效地利用有用的信息来提升推荐系统地性能是一个挑战。为了解决上面的问题,本文提出了Curriculum pre-training based HEterogeneous Subgraph Transformer(CHEST)。具体的,作者考虑从HIN里面提取有用的信息来组成交互相关的异构子图,子图包含了充分并且相关的信息来进行推荐。然后本文通过一个一个异构子图transformer来捕获丰富的语义知识。此外,本文还设计了一个curriculum 预训练策略来提供一个初级到高级地学习过程,使得HIN里面学习到的基础的语义知识可以平滑地迁移到user-item交互地建模中。
本文首先根据UIUI、UIAI这两条路径规则采样出N条target user( )到target item( )地路径构建出一个异构子图。
随后根据图上不同的节点位于target user的几阶关系上把对应的节点分到对应的slot,并找到对应的slot embedding,然后为了更充分地考虑结构信息,作者还考虑了前继节点的embedding,对于有多个前继节点的节点embedding,用其前继节点的平均和表示。
那么最后就是将节点的ID embedding,Type embedding,Slot embedding,Precursor embedding加起来获得了异构子图上每一个节点的初始化表示。随后再把这个序列送到self-attention layer来进行交互学习到一个完整的图表示。
那么整个图的表示就可以用最后一层的目标用户和目标物品的表示拼接后送到MLP里进行学习。
有了上面的模型架构,那么接下来就是设计一个专门适用于HIN-based recommendation的表示学习方法。考虑到HIN 编码复杂和异构的数据关系,本文的想法就是从交互相关的异构子图里逐渐提取和学习从local(node-level)到global(graph-level)的内容。这里使用增量预训练的策略制定了初级和高级的课程。
初级课程:初级课程旨在利用从交互相关的异构子图里面利用本地内容信息。设计了 Mased Node Prediction、Masked Edge Prediction 和 Meta-path Type Prediction三个与训练任务,前两个任务专注于增强节点级别的表示,而 第三个任务是用来捕获u-i交互的路径级别的语言。
高级课程:初级课程没法学习到整个子图全局一致性,所以这里设计了 子图对比学习的任务来弥补。这里采用的三种数据增强的方式:Path Removal、Path Insertion、Path Substitution来获得子图的不同视图。
最后也是通过对比学习的方式来学习子图的表示。
整个过程有两个阶段,增量预训练和微调。
在预训练阶段,先在初级课程上预训练,再在高级课程上预训练。微调阶段用预训练阶段训练好的模型参数来初始化模型,并采用推荐任务训练模型。
04
Contrastive Pre-Training of GNNs on Heterogeneous Graphs [CIKM 21]
尽管GNN已经是学习图表示的sota方法,但是他们通常都需要大量的标签数据来使得模型能够训练出满意的性能,而标签数据通常是昂贵且难以获得的。为了缓解标签稀疏的问题,一些预训练的任务策略开始被应用于GNNs上,来从图的通用结构属性上学习可迁移的知识。但是,现有的预训练策略都只是为同质图设计的,而本文认为,异构图能够表示更丰富的语义,这是被现有工作所忽视的。在这篇文章中,我们提出一个新颖的异构图上基于GNN的对比预训练策略(CPT-HG)来用自监督的方式捕获语义和结构信息。特别地,我们在关系级和子图级都设置了对应的语义感知的预训练任务并进一步用对比学习增强他们的表示。
作者将现有的基于自监督地GNN预训练工作分为两类:
1)模型在多个图上预训练然后在一个新的没有见过的图上微调来执行下游任务;
2)模型在一个大规模地图上预训练然后将其学到的知识迁移到剩下的部分来执行下游任务。
设计异构图地图卷积上的预训练面临地两点挑战:
1)怎么在预训练的时候区分不同类型地节点和边;
2)怎么在预训练时进一步保留高阶的语义信息。
Relation-level Pre-training Task
这里负样本有两种类型:一种是不相关的节点,也就是如图都是文章p1,但是它和没有连接过的用户匹配了;另一种就是不一致的关系,就是比如如图(p1,c1)它们之间的关系就不是(文章,作者)这种关系。然后正样本我理解的就是满足(文章,作者)关系的节点对。随后在这个任务上使用对比学习来学习关系级别的表示。
Subgraph-level pre-training task
使用元路径的缺点:1)元路径已经被证明对表征丰富的语义和提取高阶结构的能力有限;2)从源节点出发,元路径可以到达的节点数通常都很大,而元图因为更加复杂和限制性的结构,元图可以到达的节点会少很多,这使得元图比元路径更高效。
这里就是学习子图的表示和负样本对应的子图的表示对比,来学习到更好的子图级别的表示。
预训练和微调设置:我们首先预训练一个GNN模型并采用预训练模型的权重来为下游任务初始化模型。然后我们在没有见过的图上微调GNN模型来执行对应的下游任务并评估模型的性能。对于Yelp数据集,随机划分Yelp里3/4的店铺节点和其对应的其他节点到预训练阶段,剩下的到微调阶段。
05
Pre-Training Graph Neural Networks for Cold-Start Users and Items Representation [WSDM 21]
尽管最近GNN上的工作吸收高阶协同信号来缓解冷启动问题,但是冷启动用户和物品的embedding还是没有显示优化,并且在GNN的图卷积里没有考虑冷启动节点的冷启动邻居。这篇文章提出去在推荐之前预训练一个GNN模型。不同于推荐的目标,这个预训练的GNN通过有充分交互的用户、物品里面模拟冷启动的场景并且将重建embedding作为pretext task,因为这样的话就可以直接优化embedding的质量然后能够简单地应用到新的冷启动的用户和物品上。为了进一步减少冷启动的邻居的影响,我们考虑了一个自注意力为基础的元聚集器去增强每一步图卷积的聚集能力,并且考虑了一个自适应的邻居采样来根据预训练的模型的反馈选择邻居。
本文首先提出一个基础的预训练GNN模型来重构元学习设置里面冷启动用户/物品embedding。为了达到这个目的,首先需要冷启动用户/物品的ground truth的embedding来学习模型,这里使用有大量交互数据的用户和物品来模拟。这里的ground truth embedding是使用观测到的交互送进NCF进行学习的。接下来就是一个基础的GNN模型,然后用这个GNN f 学习到的用户表示和ground truth的用户表示来进行相似度计算然后训练。
Meta Aggregator
现有的工作都没有很好地考虑卷积的时候其他节点也是冷启动的节点的情况,这可能会导致卷积后的节点表示不精确的问题。
这里使用和f一样的元学习设置来训练另一个函数g。g基于每一个节点的一阶邻居为它在学习一个额外的邻居,那么这样它就能快速适应到新的冷启动节点并且产生更精确的embedding。在f里的每一次卷积操作都是将g产生的embedding和原来的embedding结合起来。f是用来解决冷启动的目标结点的表示学习,而g是增强目标节点的冷启动的邻居节点的embedding.
The Adaptive Neighbor Sampler
这个采样器根据预训练的GNN模型的反馈来学习一个自适应的采样策略。
模型预训练和下游推荐任务
预训练:首先根据一阶的邻居预训练g,然后把g吸收进每一步的图卷积里去预训练元聚集器,接下来我们根据预训练的元聚集器的反馈来预训练邻居采样器,最后我们把这些一起训练。
下游推荐任务:对于每一个目标用户和他的不同阶的邻居,我们首先使用预训练的邻居采样器来采样合适的高阶邻居,然后使用预训练的元聚集器获得用户的embedding。物品的embedding也可以通过同样的方式生成。然后我们转换这两个embedding并相乘获得相关性得分再用BPR loss进行训练。
如果觉得有用,就请分享到朋友圈吧!
最后欢迎大家关注我的微信公众号:对白的算法屋(duibainotes),跟踪NLP、推荐系统和对比学习等机器学习领域前沿,日常还会分享我的创业心得和人生感悟。想进一步交流的同学也可以通过公众号加我的微信,和我一同探讨技术问题,谢谢!